package com.pig4cloud.pig.module.controller.property;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.pig4cloud.pig.common.core.util.DateUtils;
import com.pig4cloud.pig.common.core.util.R;
import com.pig4cloud.pig.common.log.annotation.SysLog;
import com.pig4cloud.pig.common.mybatis.page.PageUtils;
import com.pig4cloud.pig.common.mybatis.page.TableDataInfo;
import com.pig4cloud.pig.common.security.service.PigUser;
import com.pig4cloud.pig.common.security.util.SecurityUtils;
import com.pig4cloud.pig.module.api.entity.excel.PropertySdJyTemplateExcel;
import com.pig4cloud.pig.module.api.entity.excel.PropertyWyfTemplateExcel;
import com.pig4cloud.pig.module.api.entity.excel.PropertyWyfYearTemplateExcel;
import com.pig4cloud.pig.module.api.entity.property.PropertyFeeOrderTemplate;
import com.pig4cloud.pig.module.service.estate.IEstateRoomService;
import com.pig4cloud.pig.module.service.property.IPropertyFeeOrderService;
import com.pig4cloud.pig.module.service.property.IPropertyFeeOrderTemplateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * 物业费相关费用的模板Controller
 *
 * @author ruoyi
 * @date 2022-06-27
 */
@Validated
@Api(value = "物业费相关费用的模板控制器", tags = {"物业费相关费用的模板管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/property/feeOrder/template")
public class PropertyFeeOrderTemplateController {

    private final IPropertyFeeOrderTemplateService propertyFeeOrderTemplateService;
	private final IEstateRoomService estateRoomService;
	private final IPropertyFeeOrderService propertyFeeOrderService;

    /**
     * 查询物业费相关费用的模板列表
     */
    @ApiOperation("查询物业费相关费用的模板列表")
    @PreAuthorize("@pms.hasPermission('module:feeOrderTemp:list')")
    @GetMapping("/list")
    public TableDataInfo<PropertyFeeOrderTemplate> list(@Validated PropertyFeeOrderTemplate propertyFeeOrderTemplate) {
        QueryWrapper<PropertyFeeOrderTemplate> qw = new QueryWrapper<>();
        if(propertyFeeOrderTemplate.getEstateId()!=null){
            qw.eq("estate_id", propertyFeeOrderTemplate.getEstateId());
        }
		if(propertyFeeOrderTemplate.getRoomId()!=null){
			qw.eq("room_id", propertyFeeOrderTemplate.getRoomId());
		}
		if(propertyFeeOrderTemplate.getRoomNo()!=null){
			qw.eq("room_no", propertyFeeOrderTemplate.getRoomNo());
		}
		if(propertyFeeOrderTemplate.getFeeType()!=null){
			qw.eq("fee_type", propertyFeeOrderTemplate.getFeeType());
		}
		if(StrUtil.isNotEmpty(propertyFeeOrderTemplate.getBeginDate())){
			qw.between("pay_time",propertyFeeOrderTemplate.getBeginDate() + " 00:00:00",propertyFeeOrderTemplate.getEndDate() + " 23:59:59");
		}
		if(propertyFeeOrderTemplate.getState()!=null){
			qw.eq("state", propertyFeeOrderTemplate.getState());
		}

		if(propertyFeeOrderTemplate.getRealName()!=null){
			qw.like("real_name", propertyFeeOrderTemplate.getRealName());
		}

		if(propertyFeeOrderTemplate.getYearNum()!=null){
			qw.eq("year_num", propertyFeeOrderTemplate.getYearNum());
		}

		if(propertyFeeOrderTemplate.getMonthNum()!=null){
			qw.eq("month_num", propertyFeeOrderTemplate.getMonthNum());
		}


		if(propertyFeeOrderTemplate.getIsArrears()!=null){
			qw.eq("is_arrears", propertyFeeOrderTemplate.getIsArrears());
		}

		if(propertyFeeOrderTemplate.getRealName()!=null){
			qw.and(wrapper->{
				wrapper.like("real_name", propertyFeeOrderTemplate.getRealName())
						.or().like("phone_num",propertyFeeOrderTemplate.getRealName())
						.or().like("room_no", propertyFeeOrderTemplate.getRealName());
			});
		}

//		if(StrUtil.isNotEmpty(propertyFeeOrderTemplate.getBeginDate())){
//			qw.between("create_time",propertyFeeOrderTemplate.getBeginDate() + " 00:00:00",propertyFeeOrderTemplate.getEndDate() + " 23:59:59");
//		}
		qw.orderByAsc("room_no,year_num,month_num");

        TableDataInfo<PropertyFeeOrderTemplate> td = PageUtils.buildDataInfo(propertyFeeOrderTemplateService.page(PageUtils.buildPage(),qw));
        List<PropertyFeeOrderTemplate> list = td.getData();
//		if (propertyFeeOrderTemplate.getState()!=null){
//			if (propertyFeeOrderTemplate.getState()==1 && propertyFeeOrderTemplate.getXianshangBeginDate()!=null){
//				List<PropertyFeeOrderTemplate> list2 = new ArrayList<>();
//				QueryWrapper<PropertyFeeOrder> qw1 = new QueryWrapper<>();
//				if(propertyFeeOrderTemplate.getXianshangBeginDate()!=null){
//					qw1.between("pay_time",propertyFeeOrderTemplate.getXianshangBeginDate(),propertyFeeOrderTemplate.getXianshangEndDate());
//				}
//				List<PropertyFeeOrder> list1 = propertyFeeOrderService.list(qw1);
//				ArrayList<Integer> list4 = new ArrayList<Integer>();
//				for (PropertyFeeOrder list3:list1){
//					list4.add(Math.toIntExact(list3.getId()));
//				}
//				if (list4.size()!=0){
//					for (int i=0;i<=list4.size()-1;i++){
//						for (PropertyFeeOrderTemplate list5:list){
//							System.out.println(list4.get(i));
//							System.out.println(list5.getFeeOrderId());
//							if (list4.get(i) .equals(list5.getFeeOrderId())){
//								list2.add(list5);
//							}
//						}
//					}
//				}
//				td.setRows(list2);
//			}
//		}
        return td;
    }


	/**
	 * 查询物业费相关费用的模板列表
	 */
	@ApiOperation("查询物业费相关费用的模板列表")
	@PreAuthorize("@pms.hasPermission('module:feeOrderTemp:list')")
	@GetMapping("/nub")
	public List nub(@Validated PropertyFeeOrderTemplate propertyFeeOrderTemplate) {
		QueryWrapper<PropertyFeeOrderTemplate> qw = new QueryWrapper<>();
		if(propertyFeeOrderTemplate.getEstateId()!=null){
			qw.eq("estate_id", propertyFeeOrderTemplate.getEstateId());
		}
//		TableDataInfo<PropertyFeeOrderTemplate> td = PageUtils.buildDataInfo(propertyFeeOrderTemplateService.page(PageUtils.buildPage(),qw));
		List<PropertyFeeOrderTemplate> list = propertyFeeOrderTemplateService.list(qw);
		double yingjiao = 0.00;
		double weijiao = 0.00;
		double yijiao = 0.00;
		for (PropertyFeeOrderTemplate list1:list){
			Double feiyong1 = list1.getTotalPrice().doubleValue();
			yingjiao += feiyong1;
			if (list1.getState()==0){
				weijiao += feiyong1;
			}else{
				yijiao += feiyong1;
			}
		}
		DecimalFormat df = new DecimalFormat("#0.00");
		List list1 = new ArrayList<>();
		list1.add(df.format(yingjiao)+"元");
		list1.add(df.format(weijiao)+"元");
		list1.add(df.format(yijiao)+"元");
		return list1;
	}

	/**
	 * 查询物业费相关费用的模板列表
	 */
	@ApiOperation("查询物业费相关费用的模板列表")
	@PreAuthorize("@pms.hasPermission('module:feeOrderTemp:list')")
	@GetMapping("/nubInfo")
	public List nubInfo(@Validated PropertyFeeOrderTemplate propertyFeeOrderTemplate) {
		QueryWrapper<PropertyFeeOrderTemplate> qw = new QueryWrapper<>();
		if(propertyFeeOrderTemplate.getEstateId()!=null){
			qw.eq("estate_id", propertyFeeOrderTemplate.getEstateId());
		}
		if(propertyFeeOrderTemplate.getRoomId()!=null){
			qw.eq("room_id", propertyFeeOrderTemplate.getRoomId());
		}
		if(propertyFeeOrderTemplate.getState()!=null){
			qw.eq("state", propertyFeeOrderTemplate.getState());
		}
		if(StrUtil.isNotEmpty(propertyFeeOrderTemplate.getBeginDate())){
			qw.between("pay_time",propertyFeeOrderTemplate.getBeginDate() + " 00:00:00",propertyFeeOrderTemplate.getEndDate() + " 23:59:59");
		}
		List<PropertyFeeOrderTemplate> list = propertyFeeOrderTemplateService.list(qw);
		double yingjiao = 0.00;
		double weijiao = 0.00;
		double yingjiaoWyf = 0.00;
		double weijiaoWyf = 0.00;
		double yingjiaoDian = 0.00;
		double weijiaoDian = 0.00;
		double yingjiaoWater = 0.00;
		double weijiaoWater = 0.00;
		for (PropertyFeeOrderTemplate list1:list){
			Double feiyong1 = list1.getTotalPrice().doubleValue();
			yingjiao += feiyong1;
			if (list1.getState()==0){
				weijiao += feiyong1;
			}
			if (list1.getFeeType().equals("wyf")){
				yingjiaoWyf+=feiyong1;
				if (list1.getState()==0){
					weijiaoWyf+=feiyong1;
				}
			}else if (list1.getFeeType().equals("eletrict")){
				yingjiaoDian+=feiyong1;
				if (list1.getState()==0){
					weijiaoDian+=feiyong1;
				}
			}else if (list1.getFeeType().equals("water")){
				yingjiaoWater+=feiyong1;
				if (list1.getState()==0){
					weijiaoWater+=feiyong1;
				}
			}
		}
		DecimalFormat df = new DecimalFormat("#0.00");
		List list1 = new ArrayList<>();
		list1.add(df.format(yingjiao)+"元");
		list1.add(df.format(weijiao)+"元");
		list1.add(df.format(yingjiaoWyf)+"元");
		list1.add(df.format(weijiaoWyf)+"元");
		list1.add(df.format(yingjiaoDian)+"元");
		list1.add(df.format(weijiaoDian)+"元");
		list1.add(df.format(yingjiaoWater)+"元");
		list1.add(df.format(weijiaoWater)+"元");
		return list1;
	}
    /**
     * 导出物业费相关费用的模板列表
     */
    @ApiOperation("导出物业费相关费用的模板列表")
    @PreAuthorize("@pms.hasPermission('module:feeOrderTemp:export')")
    @SysLog("物业费相关费用的模板")
    @GetMapping("/export")
    public List export(@Validated PropertyFeeOrderTemplate propertyFeeOrderTemplate) {
		QueryWrapper<PropertyFeeOrderTemplate> qw = new QueryWrapper<>();
		if(propertyFeeOrderTemplate.getEstateId()!=null){
			qw.eq("estate_id", propertyFeeOrderTemplate.getEstateId());
		}
		if(propertyFeeOrderTemplate.getRoomId()!=null){
			qw.eq("room_id", propertyFeeOrderTemplate.getRoomId());
		}
		if(propertyFeeOrderTemplate.getRoomNo()!=null){
			qw.eq("room_no", propertyFeeOrderTemplate.getRoomNo());
		}
		if(propertyFeeOrderTemplate.getFeeType()!=null && ObjectUtil.isNotEmpty(propertyFeeOrderTemplate.getType())){
			qw.eq("fee_type", propertyFeeOrderTemplate.getFeeType());
		}
		if(propertyFeeOrderTemplate.getState()!=null){
			qw.eq("state", propertyFeeOrderTemplate.getState());
		}
		if(StrUtil.isNotEmpty(propertyFeeOrderTemplate.getBeginDate())){
			qw.between("pay_time",propertyFeeOrderTemplate.getBeginDate() + " 00:00:00",propertyFeeOrderTemplate.getEndDate() + " 23:59:59");
		}
		if(propertyFeeOrderTemplate.getRealName()!=null){
			qw.like("real_name", propertyFeeOrderTemplate.getRealName());
		}

		if(propertyFeeOrderTemplate.getYearNum()!=null){
			qw.eq("year_num", propertyFeeOrderTemplate.getYearNum());
		}

		if(propertyFeeOrderTemplate.getMonthNum()!=null){
			qw.eq("month_num", propertyFeeOrderTemplate.getMonthNum());
		}

		if(propertyFeeOrderTemplate.getIsArrears()!=null){
			qw.eq("is_arrears", propertyFeeOrderTemplate.getIsArrears());
		}

		if(propertyFeeOrderTemplate.getRealName()!=null){
			qw.and(wrapper->{
				wrapper.like("real_name", propertyFeeOrderTemplate.getRealName())
						.or().like("phone_num",propertyFeeOrderTemplate.getRealName())
						.or().like("room_no", propertyFeeOrderTemplate.getRealName());
			});
		}

        List<PropertyFeeOrderTemplate> list = propertyFeeOrderTemplateService.list(qw);
//		if (propertyFeeOrderTemplate.getState()==1 && propertyFeeOrderTemplate.getXianshangBeginDate()!=null){
//			List<PropertyFeeOrderTemplate> list2 = new ArrayList<>();
//			QueryWrapper<PropertyFeeOrder> qw1 = new QueryWrapper<>();
//			if(propertyFeeOrderTemplate.getXianshangBeginDate()!=null){
//				qw1.between("pay_time",propertyFeeOrderTemplate.getXianshangBeginDate(),propertyFeeOrderTemplate.getXianshangEndDate());
//			}
//			List<PropertyFeeOrder> list1 = propertyFeeOrderService.list(qw1);
//			ArrayList<Integer> list4 = new ArrayList<Integer>();
//			for (PropertyFeeOrder list3:list1){
//				list4.add(Math.toIntExact(list3.getId()));
//			}
//			if (list4.size()!=0){
//				for (int i=0;i<=list4.size()-1;i++){
//					for (PropertyFeeOrderTemplate list5:list){
//						System.out.println(list4.get(i));
//						System.out.println(list5.getFeeOrderId());
//						if (list4.get(i) .equals(list5.getFeeOrderId())){
//							list2.add(list5);
//						}
//					}
//				}
//			}
//			list=list2;
//		}
		if(CollUtil.isNotEmpty(list)){
			for (PropertyFeeOrderTemplate template : list){
//				template.setCreateTimeStr(DateUtils.getTime(template.getCreateTime()));
				if(template.getState() == 0){
					template.setStateStr("未交费");
				} else if(template.getState() == 1){
					template.setStateStr("已交费");
				} else if(template.getState() == 2){
					template.setStateStr("线下交费");
				}
				if(template.getFeeType().equals("wyf")){
					template.setFeeTypeName("物业费");
				}else if(template.getFeeType().equals("rubbish")){
					template.setFeeTypeName("垃圾处理费");
				}else if(template.getFeeType().equals("car")){
					template.setFeeTypeName("车位费");
				}else if(template.getFeeType().equals("water")){
					template.setFeeTypeName("代收水费");
				}else if(template.getFeeType().equals("eletrict")){
					template.setFeeTypeName("代收电费");
				}else if(template.getFeeType().equals("jiaya")){
					template.setFeeTypeName("加压费");
				}
				if(template.getPayTime()!=null){
					template.setPayTimeEx(DateUtils.getTime(template.getPayTime()));
				}
			}
		}
        // ExcelUtil<PropertyFeeOrderTemplate> util = new // ExcelUtil<>(PropertyFeeOrderTemplate.class);
        return  list;// util.exportExcel(list, "物业费相关费用的模板");
    }

	/**
	 * 导出物业费相关费用的模板列表
	 */
	@ApiOperation("导出物业费相关费用的模板列表")
	@PreAuthorize("@pms.hasPermission('module:feeOrderTemp:export')")
	@SysLog("物业费相关费用的模板")
	@GetMapping("/offlineExport")
	public List offlineExport(@Validated PropertyFeeOrderTemplate propertyFeeOrderTemplate) {
		QueryWrapper<PropertyFeeOrderTemplate> qw = new QueryWrapper<>();
		if(propertyFeeOrderTemplate.getEstateId()!=null){
			qw.eq("estate_id", propertyFeeOrderTemplate.getEstateId());
		}
		if(propertyFeeOrderTemplate.getRoomId()!=null){
			qw.eq("room_id", propertyFeeOrderTemplate.getRoomId());
		}
		if(propertyFeeOrderTemplate.getRoomNo()!=null){
			qw.eq("room_no", propertyFeeOrderTemplate.getRoomNo());
		}
		if(propertyFeeOrderTemplate.getFeeType()!=null){
			qw.eq("fee_type", propertyFeeOrderTemplate.getFeeType());
		}
		if(propertyFeeOrderTemplate.getState()!=null){
			qw.eq("state", propertyFeeOrderTemplate.getState());
		}
		if(propertyFeeOrderTemplate.getRealName()!=null){
			qw.like("real_name", propertyFeeOrderTemplate.getRealName());
		}

		if(propertyFeeOrderTemplate.getYearNum()!=null){
			qw.eq("year_num", propertyFeeOrderTemplate.getYearNum());
		}

		if(propertyFeeOrderTemplate.getMonthNum()!=null){
			qw.eq("month_num", propertyFeeOrderTemplate.getMonthNum());
		}

		if(propertyFeeOrderTemplate.getIsArrears()!=null){
			qw.eq("is_arrears", propertyFeeOrderTemplate.getIsArrears());
		}

		if(propertyFeeOrderTemplate.getRealName()!=null){
			qw.and(wrapper->{
				wrapper.like("real_name", propertyFeeOrderTemplate.getRealName())
						.or().like("phone_num",propertyFeeOrderTemplate.getRealName())
						.or().like("room_no", propertyFeeOrderTemplate.getRealName());
			});
		}

		List<PropertyFeeOrderTemplate> list = propertyFeeOrderTemplateService.list(qw);
		if(CollUtil.isNotEmpty(list)){
			for (PropertyFeeOrderTemplate template : list){
//				template.setCreateTimeStr(DateUtils.getTime(template.getCreateTime()));
				if(template.getState() == 0){
					template.setStateStr("未交费");
				} else if(template.getState() == 1){
					template.setStateStr("已交费");
				} else if(template.getState() == 2){
					template.setStateStr("线下交费");
				}
			}
		}
		// ExcelUtil<PropertyFeeOrderTemplate> util = new // ExcelUtil<>(PropertyFeeOrderTemplate.class);
		return  list;// util.exportExcel(list, "物业费相关费用的模板");
	}

	@SysLog("物业费导入")
	@PreAuthorize("@ss.hasAnyPermi('module:feeOrderTemp:import')")
	@PostMapping("/importDataWyf")
	public R importDataWyf(MultipartFile file, boolean updateSupport,Integer estateId) throws Exception {
		// ExcelUtil<PropertyWyfTemplateExcel> util = new // ExcelUtil<>(PropertyWyfTemplateExcel.class);
//		List<PropertyWyfTemplateExcel> templateExcels = util.importExcel(file.getInputStream());
//		PigUser sysUser = SecurityUtils.getUser();
//		String operName = sysUser.getUserName();
//		String message = propertyFeeOrderTemplateService.importWyfData(templateExcels,estateId, updateSupport, operName);
//		return R.ok(message);
		return R.ok();
	}


	@SysLog("物业费导入")
	@PreAuthorize("@ss.hasAnyPermi('module:feeOrderTemp:import')")
	@PostMapping("/importDataWyfYear")
	public R importDataWyfYear(MultipartFile file, boolean updateSupport,Integer estateId) throws Exception {
		// ExcelUtil<PropertyWyfYearTemplateExcel> util = new // ExcelUtil<>(PropertyWyfYearTemplateExcel.class);
//		List<PropertyWyfYearTemplateExcel> templateExcels = util.importExcel(file.getInputStream());
//		PigUser sysUser = SecurityUtils.getUser();
//		String operName = sysUser.getUsername();
//		String message = propertyFeeOrderTemplateService.importWyfYearData(templateExcels,estateId, updateSupport, operName);
//		return R.ok(message);
		return R.ok();
	}

	@SysLog("水电加压费导入")
	@PreAuthorize("@ss.hasAnyPermi('module:feeOrderTemp:import')")
	@PostMapping("/importDataSdJ")
	public R importDataSdJ(MultipartFile file, boolean updateSupport,Integer estateId) throws Exception {
//		 ExcelUtil<PropertySdJyTemplateExcel> util = new // ExcelUtil<>(PropertySdJyTemplateExcel.class);
//		List<PropertySdJyTemplateExcel> templateExcels = util.importExcel(file.getInputStream());
//		PigUser sysUser = SecurityUtils.getUser();
//		String operName = sysUser.getUsername();
//		String message = propertyFeeOrderTemplateService.importSdJyData(templateExcels,estateId, updateSupport, operName);
//		return R.ok(message);
		return R.ok();
	}


	/**
	 *  下载物业费导入模板
	 * @return
	 */
	@GetMapping("/importTemplateWyf")
	public R importTemplateWyf() {
//		ExcelUtil<PropertyWyfTemplateExcel> util = new ExcelUtil<>(PropertyWyfTemplateExcel.class);
//		return util.importTemplateExcel("物业费模板");
		return R.ok();
	}

	/**
	 *  下载物业费导入模板
	 * @return
	 */
	@GetMapping("/importTemplateWyfYear")
	public R importTemplateWyfYear() {
		// ExcelUtil<PropertyWyfTemplateExcel> util = new // ExcelUtil<>(PropertyWyfTemplateExcel.class);
//		return util.importTemplateExcel("物业费模板");
		return R.ok();
	}

	/**
	 *  下载数点加压导入模板
	 * @return
	 */
	@GetMapping("/importTemplateSdJ")
	public R importTemplateSdJ() {
		// ExcelUtil<PropertySdJyTemplateExcel> util = new // ExcelUtil<>(PropertySdJyTemplateExcel.class);
//		return util.importTemplateExcel("水电加压模板");
		return R.ok();
	}


    /**
     * 获取物业费相关费用的模板详细信息
     */
    @ApiOperation("获取物业费相关费用的模板详细信息")
    @PreAuthorize("@pms.hasPermission('module:feeOrderTemp:query')")
    @GetMapping("/{id}")
    public R<PropertyFeeOrderTemplate> getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) {
        PropertyFeeOrderTemplate propertyFeeOrderTemplate = propertyFeeOrderTemplateService.getById(id);
        if(propertyFeeOrderTemplate!=null){
			propertyFeeOrderTemplate.setIsCanEdit(0);
        	if(propertyFeeOrderTemplate.getState() == 0){
				propertyFeeOrderTemplate.setIsCanEdit(1);
			}
		}
        return R.ok(propertyFeeOrderTemplate);
    }

    /**
     * 新增物业费相关费用的模板
     */
    @ApiOperation("新增物业费相关费用的模板")
    @PreAuthorize("@pms.hasPermission('module:feeOrderTemp:add')")
    @SysLog("物业费相关费用的模板")

    @PostMapping()
    public R<Void> add(@Valid @RequestBody PropertyFeeOrderTemplate propertyFeeOrderTemplate) {
        return R.okByRow(propertyFeeOrderTemplateService.save(propertyFeeOrderTemplate) ? 1 : 0);
    }

    /**
     * 修改物业费相关费用的模板
     */
    @ApiOperation("修改物业费相关费用的模板")
    @PreAuthorize("@pms.hasPermission('module:feeOrderTemp:edit')")
    @SysLog("物业费相关费用的模板")

    @PutMapping()
    public R<Void> edit(@Valid @RequestBody PropertyFeeOrderTemplate propertyFeeOrderTemplate) {
		if(propertyFeeOrderTemplate.getState() == 2){
			Date date = new Date();
			propertyFeeOrderTemplate.setPayTime(date);
		}
        return R.okByRow(propertyFeeOrderTemplateService.updateById(propertyFeeOrderTemplate) ? 1 : 0);
    }

    /**
     * 删除物业费相关费用的模板
     */
    @ApiOperation("删除物业费相关费用的模板")
    @PreAuthorize("@pms.hasPermission('module:feeOrderTemp:remove')")
    @SysLog("物业费相关费用的模板")
    @DeleteMapping("/{ids}")
    public R<Void> remove(@NotEmpty(message = "主键不能为空")  @PathVariable Long[] ids) {
        return R.okByRow(propertyFeeOrderTemplateService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
    }


	/**
	 * 批量修改状态
	 */
	@ApiOperation("批量修改状态")
	@PreAuthorize("@pms.hasPermission('module:feeOrderTemp:edit')")
	@SysLog("批量修改状态")
	@PostMapping("/batchUpdate")
	public R<Void> batchUpdate(@Valid @RequestBody PropertyFeeOrderTemplate propertyFeeOrderTemplate) {
		int count = 0;
		List<Integer> ids = propertyFeeOrderTemplate.getIds();
		if(CollUtil.isNotEmpty(ids)){
			for (Integer id : ids){
				PropertyFeeOrderTemplate template = propertyFeeOrderTemplateService.findById(id);
				if(template!=null){
					if(propertyFeeOrderTemplate.getState()!=null){
						template.setState(propertyFeeOrderTemplate.getState());
						if(propertyFeeOrderTemplate.getState()==2){
							Date date = new Date();
							template.setPayTime(date);
						}
					}
					if(propertyFeeOrderTemplate.getRemark()!=null) {
						template.setRemark(propertyFeeOrderTemplate.getRemark());
					}
					boolean bl =propertyFeeOrderTemplateService.updateById(template);
					if(bl){
						count++;
					}
				}
			}
		}
		return R.ok("成功修改" + count+"条数据");
	}


	/**
	 * 查询对应的年份列表
	 */
	@ApiOperation("查询物业费相关费用的模板列表")
	@PreAuthorize("@pms.hasPermission('module:feeOrderTemp:list')")
	@GetMapping("/yearList")
	public TableDataInfo<PropertyFeeOrderTemplate> yearList(@Validated PropertyFeeOrderTemplate propertyFeeOrderTemplate) {
		QueryWrapper<PropertyFeeOrderTemplate> qw=new QueryWrapper<>();
		if (propertyFeeOrderTemplate.getEstateId()!=null){
			qw.eq("estate_id",1);
		}
		qw.eq("state",0);
		qw.groupBy("year_num");
		qw.orderByDesc("year_num");
		TableDataInfo<PropertyFeeOrderTemplate> td = PageUtils.buildDataInfo(propertyFeeOrderTemplateService.page(PageUtils.buildPage(),qw));
		List<PropertyFeeOrderTemplate> list = td.getData();
		return td;
	}
}
